# 1.整数
from pickle import TRUE
print("---------------------------------------------整数-----------------------------------------------")
i = 1
j = 0xff00 # 十六进制
k = 100_000_000 #Python允许在数字中间以_分隔
print(i, hex(j), k )
print("---------------------------------------------浮点数----------------------------------------------")
# 2.浮点数
f = 23.4
print(f)

print("---------------------------------------------字符串----------------------------------------------")
# 3.字符串
# 字符串是以单引号'或双引号"括起来的任意文本，比如'abc'，"xyz"等等
# 转义字符\可以转义很多字符，比如\n表示换行，\t表示制表符，字符\本身也要转义，所以\\表示的字符就是\
# Python还允许用r''表示''内部的字符串默认不转义 
# 如果字符串内部有很多换行，用\n写在一行里不好阅读，为了简化，Python允许用'''...'''的格式表示多行内容
s = 'I\'m ok'
print(s)
print(r'\\t\\')
print(r'''line1
... line2\n
... line3''')
print("---------------------------------------------字节----------------------------------------------")
# 字节
print('字节', b'hello', bytes('中文', encoding='utf-8'))

# 4.布尔值
# 布尔值和布尔代数的表示完全一致，一个布尔值只有True、False两种值，要么是True，要么是False，
# 在Python中，可以直接用True、False表示布尔值（请注意大小写），也可以通过布尔运算计算出来
# 布尔值可以用and、or和not运算
print("---------------------------------------------布尔----------------------------------------------")
b = True
print(b)
print(True and False)
print(not True)

# 布尔值经常用在条件判断中，比如
age = 20
if age >= 18:
    print('adult')
else:
    print('teenger')
print("---------------------------------------------空值----------------------------------------------")
# 5.空值
#空值是Python里一个特殊的值，用None表示。None不能理解为0，因为0是有意义的，而None是一个特殊的空值。
print(None)

# 6.变量
# 变量的概念基本上和初中代数的方程变量是一致的，只是在计算机程序中，变量不仅可以是数字，还可以是任意数据类型。
# 变量在程序中就是用一个变量名表示了，变量名必须是大小写英文、数字和_的组合，且不能用数字开头
print("---------------------------------------------变量----------------------------------------------")
# 变量a是一个整数。
a = 1 
# 变量t_007是一个字符串
t_007 = 'T007'

# 变量Answer是一个布尔值True
Answer = True

# 在Python中，等号=是赋值语句，可以把任意数据类型赋值给变量，
# 同一个变量可以反复赋值，而且可以是不同类型的变量，例如

a = 123 # a是整数
print(a)
a = 'ABC' # a变为字符串
print(a)

# 最后，理解变量在计算机内存中的表示也非常重要
a = 'ABC'
# Python解释器干了两件事情：
# 在内存中创建了一个'ABC'的字符串；
# 在内存中创建了一个名为a的变量，并把它指向'ABC'。

# 也可以把一个变量a赋值给另一个变量b，这个操作实际上是把变量b指向变量a所指向的数据，例如下面的代码：

a = 'ABC'
b = a
a = 'XYZ'
print(b)
print("---------------------------------------------常量----------------------------------------------")
# 7.常量
# 所谓常量就是不能变的变量，比如常用的数学常数π就是一个常量。在Python中，通常用全部大写的变量名表示常量：
# 但事实上PI仍然是一个变量，Python根本没有任何机制保证PI不会被改变，所以，用全部大写的变量名表示常量只是一个习惯上的用法，
# 如果你一定要改变变量PI的值，也没人能拦住你
PI = 3.14159265359
print(PI)
print("---------------------------------------------除法（/）----------------------------------------------")
# 有两种除法，一种除法是/,/除法计算结果是浮点数，即使是两个整数恰好整除，结果也是浮点数：
print(9/3)
print("---------------------------------------------除法(//)----------------------------------------------")
# 还有一种除法是//，称为地板除，两个整数的除法仍然是整数：
print(10//3)
# 你没有看错，整数的地板除//永远是整数，即使除不尽。要做精确的除法，使用/就可以。
print("---------------------------------------------模运算----------------------------------------------")
# 因为//除法只取结果的整数部分，所以Python还提供一个余数运算，可以得到两个整数相除的余数：
print(10 % 3)
# 无论整数做//除法还是取余数，结果永远是整数，所以，整数运算结果永远是精确的。

# 小结
# Python支持多种数据类型，在计算机内部，可以把任何数据都看成一个“对象”，而变量就是在程序中用来指向这些数据对象的，对变量赋值就是把数据和变量给关联起来。

# 对变量赋值x = y是把变量x指向真正的对象，该对象是变量y所指向的。随后对变量y的赋值不影响变量x的指向。

# 注意：Python的整数没有大小限制，而某些语言的整数根据其存储长度是有大小限制的，例如Java对32位整数的范围限制在-2147483648-2147483647。

# Python的浮点数也没有大小限制，但是超出一定范围就直接表示为inf（无限大）。
